Міністерство освіти і науки України
Національний технічний університет України
«Київський політехнічний інститут ім. І. Сікорського»
Кафедра автоматизації проектування енергетичних процесів і систем
Лабораторна робота № 6
з дисципліни «Операційні системи»
«Система команд. Арифметичні команди»
Робота студента 1 курсу, ТР-15
Смірнова Максим Олекандровича
Перевірила д.т.н., проф. Левченко Л.О.
КИЇВ 2022Мета роботи: програмування блоку обчислення арифметичних виразів на прикладі реалізації математичних формул з використанням арифметичних команд асемблера за індивідуальними завданнями.
Теоретичний опис роботи
6.1 Команди переміщення даних
6.1.1 MOVe operand Пересилання операнда
MOVe operand to/from system registers Пересилання операнда у системні регістри (або з них)
Схема команди: MOV приймальник, джерело
Призначення: пересилання даних між регістрами або регістрами та пам’яттю. Команда має обмеження:
• копіювання здійснюється з другого операнда у перший;
• значення другого операнда не змінююється;
• обидва оператора не можуть бути з пам’яті;
• лише один з операндів може бути сегментним, приймальником не може бути регістр CS; не можна пересилати сегментні регістри.
6.2 Арифметичні команди
6.2.1 Команда складання ADD (ADDition)
Синтаксис: ADD приймальник, джерело
Символьний код: ADD регістр/пам’ять, регістр/пам’ять/безпосереднє значення
Призначення: складання двох операндів джерела та приймальника розмірністю байт, слово або подвійне слово, записати результат складання за адресою першого операнда, встановити прапорці.
Ця операція є коректною при використанні операндів: регістр-регістр, регістр-пам’ять, пам’ять-пам’ять, пам’ять-безпосереднє значення.
6.2.2 Команда складання двох операндів з урахуванням перенесенням з молодшого розряда ADC (ADDition with Carry)
Синтаксис: ADС приймальник, джерело.
Символьний код: ADС регістр/пам’ять, регістр/пам’ять/безпосереднє значення
Впливає на прапорці AF, CF, OF, PF, SF, ZF
Результат заноситься у перший операнд, в залежності від результату встановлюються прапорці. Команда ADC використовується при складанні багаторозрядних двійкових чисел.
6.2.3 Команда віднімання SUB (SUBtract)
Синтаксис: SUB операнд_1, операнд_2
Символьний код: SUB регістр/пам’ять, регістр/пам’ять/безпосереднє значення
Впливає на прапорці AF, CF, OF, PF, SF, ZF
Команда призначена для віднімання цілочисельних операндів або для віднімання молодших частин значень багатобайтних операндів.
Віднімання здійснюється за методом складання з двійковим доповненням: для другого операнда встановлюється додатковий код (біти інвертуються +1), а потім відбувається складання з першим операндом. Операнд_2 віднімається від операнда_1, результат записується в операнд_1.
6.2.4 Команда віднімання із зайняттям (заемом) SBB (SuBtract with Borrow) або віднімання з перенесенням
Синтаксис: SBB операнд_1, операнд_2
Символьний код: SBB регістр/пам’ять, регістр/пам’ять/безпосереднє значення
Команда призначена для виконання цілочисельного віднімання старших частин значень багатобайтних операндів з урахуванням можливого попереднього зайняття при відніманні молодших частин значень цих операндів, коли виконувалося попереднє віднімання командами SBB та SUB (за станом прапорця перенесення CF).
6.2.5 Команда множення двох цілих двійковихчисел без урахування знаку MUL (MULtiply)
Команда перемножує два цілих числа без знаку.
Синтаксис: MUL множник_1
Символьний код: MUL регістр/пам’ять.
Команда MUL сприймає старший біт в якості біта даних , а не як біт знака.
Алгоритм роботи команди залежить від формату операнда команди і вимагає явної вказівки місцеположення тільки одного співмножника, який може бути розташований в пам'яті або в регістрі (перший співмножник).
6.2.6 Команда множення двох цілих двійкових чисел з урахуванням знаку IMUL (Integer MULtiply)
Команда виконує цілочисельне множення операндів з урахуванням їх знакових розрядів. Команда сприймає старші(перші ліворуч) біти чисел в якості знаків (0 – позитивне число, 1 – негатив...